package com.vhans.db.service;

import com.vhans.core.domain.CGroupMsg;
import com.vhans.db.model.dto.ConditionDTO;
import com.vhans.db.model.dto.groupmsg.GroupMsgDTO;
import com.vhans.db.model.vo.groupmsg.GroupMsgInfoVO;
import com.vhans.db.model.vo.groupmsg.GroupMsgLastVO;
import com.vhans.db.model.vo.groupmsg.GroupMsgVO;
import com.vhans.db.model.vo.msg.MsgVO;

import java.util.List;

/**
 * 群聊天信息Service接口
 * 
 * @author vhans
 * @date 2023-05-21
 */
public interface ICGroupMsgService {

    /**
     * 查询群聊天信息列表
     * 
     * @param condition 条件
     * @return 群聊天信息集合
     */
    List<GroupMsgVO> selectGroupMsgVOList(ConditionDTO condition);

    /**
     * 新增群聊天信息
     *
     * @param cGroupMsg 群聊天信息
     * @return 新增的群聊天信息id
     */
    CGroupMsg insertGroupMsg(GroupMsgDTO cGroupMsg);

    /**
     * 删除群中指定用户聊天信息
     *
     * @param msgId 消息id
     */
    void deleteGroupMsg(Integer msgId);

    /**
     * 获取群聊天信息编辑信息
     *
     * @param id 群聊天信息主键
     * @return 群聊天信息
     */
    GroupMsgInfoVO selectGroupMsgInfoById(Integer id);

    /**
     * 批量删除群聊天信息
     *
     * @param idList 需要删除的群聊天信息主键列表
     * @return 影响行
     */
    int deleteGroupMsgByIdIdList(List<Integer> idList);

    /**
     * 获取群的最后一条聊天记录
     *
     * @param groupId 群号
     * @return 最后一条聊天记录
     */
    GroupMsgLastVO getLastGroupMsg(Integer groupId);

    /**
     * 获取群的聊天记录，通过群id来获取
     *
     * @param groupId 群id
     * @return 聊天记录
     */
    List<GroupMsgVO> getRecentGroupMsg(Integer groupId);
}
